using System.Threading.Tasks;
using Abp.Application.Services;
using Abp.Application.Services.Dto;
using KDS.Mes.Users.Dto;
using KDS.Mes.Authorization.Users.Dto;

namespace KDS.Mes.Users
{
    public interface IUserAppService : IApplicationService
    {
        PagedResultDto<UserListDto> GetPagedUsers(GetUsersInput input);

        Task<GetUserForEditOutput> GetUserForEdit(NullableIdDto<long> input);

        Task CreateOrUpdateUser(CreateOrUpdateUserInput input);

        Task DeleteUser(EntityDto<long> input);

        Task ProhibitPermission(ProhibitPermissionInput input);

        Task RemoveFromRole(long userId, string roleName);

        Task<ListResultDto<UserListDto>> GetUsers();

        Task CreateUser(CreateUserInput input);
    }
}